Appearance
MySQL Docker 部署与使用
通用说明
- 使用 Docker 可以快速部署 MySQL 不同版本。
- 注意端口映射,避免与宿主机或其他容器冲突。
- 推荐使用数据卷实现数据持久化。
版本差异速查表
| 特性 | MySQL 8.0 | MySQL 5.7 |
|---|---|---|
| 默认字符集 | utf8mb4 | latin1 |
| 默认密码加密 | caching_sha2_password | mysql_native_password |
| JDBC 额外配置 | 可能需要 allowPublicKeyRetrieval | 一般不需要 |
| 推荐端口 | 3307(避免冲突) | 3306 |
MySQL 8.0 部署与使用
1. 拉取镜像
bash
docker pull mysql:8.02. 运行容器(基础版)
bash
docker run --name mysql8 \
-e MYSQL_ROOT_PASSWORD=yourpassword \
-p 3307:3306 \
-d mysql:8.0说明:将宿主机的
3307端口映射到容器的3306
3. 数据持久化(推荐)
bash
docker run --name mysql8 \
-e MYSQL_ROOT_PASSWORD=yourpassword \
-p 3307:3306 \
-v /your/data/dir:/var/lib/mysql \
-d mysql:8.01、先创建文件夹
# 创建数据目录
mkdir -p /docker/service-data/mysql/dir
# 然后执行 docker run
docker run --name mysql8 \
-e MYSQL_ROOT_PASSWORD=lq54123 \
-p 3307:3306 \
-v /docker/service-data/mysql/dir:/var/lib/mysql \
-d mysql:8.0账号密码
root
lq541234. 查看容器状态
bash
docker ps5. 连接到 MySQL 8.0
bash
docker exec -it mysql8 mysql -uroot -pyourpassword6. 新建数据库字符集与排序规则建议
- 字符集:
utf8mb4(MySQL 8.0+ 默认,支持 emoji) - 排序规则建议:
utf8mb4_general_ci:中文通用,不区分大小写utf8mb4_unicode_ci:更准确,稍慢utf8mb4_bin:区分大小写
7. 连接注意事项(客户端 / JDBC)
MySQL 8.0 默认使用 caching_sha2_password 加密策略,某些老客户端可能报错:
Public Key Retrieval is not allowed
解决方案:在 JDBC 连接字符串中添加参数
properties
jdbc:mysql://localhost:3307/dbname?allowPublicKeyRetrieval=true示例:
bash
jdbc:mysql://192.168.31.196:3307/mysql?allowPublicKeyRetrieval=trueMySQL 5.7 部署与使用
1. 拉取镜像
bash
docker pull mysql:5.72. 运行容器(基础版)
bash
docker run --name mysql57 \
-e MYSQL_ROOT_PASSWORD=yourpassword \
-p 3306:3306 \
-d mysql:5.73. 数据持久化(推荐)
bash
docker run --name mysql57 \
-e MYSQL_ROOT_PASSWORD=yourpassword \
-p 3306:3306 \
-v /my/own/datadir:/var/lib/mysql \
-d mysql:5.74. 连接到 MySQL 5.7
bash
docker exec -it mysql57 mysql -uroot -pyourpassword5. 字符集说明(5.7 默认不是 utf8mb4)
- 建议显式设置字符集为
utf8mb4,排序规则同上。